/**
 * @Time: 2018/11/22 13:49
 * @Author: wangmin
 * @File: auth
 * @Software: GoLand
 */
package cluster

import (
	"open_manjing/microsys/jsonio"
	"open_manjing/oss/models/object"
)

//授权管理
type Auth struct {
	App
}

// @Title 临时授权
// @Description 授权一个客户端/授权后可通过授权码上传或读取对象
// @Param ExpiryTime body string true "过期时间"
// @Success 0     {}
// @Failure 50000 业务错误
// @Failure 50010 请求参数错误
// @router /tmp-auth [post]
func (c *Auth) TmpAuth() {
	var data struct {
		ExpiryTime int64
	}
	ok, info := jsonio.Input(c.Ctx.Input.RequestBody, &data)
	if !ok {
		c.Data["json"] = jsonio.Fail(jsonio.ErrParamError, info, nil)
		return
	}
	err, code := object.TmpAuth(data.ExpiryTime)
	if err != nil {
		c.Data["json"] = jsonio.Fail(jsonio.ErrBusiness, err.Error(), nil)
		return
	}
	c.Data["json"] = jsonio.Success(map[string]string{
		"Code": code,
	}, "授权成功")
}

// @Title 对象永久授权
// @Description 获取对象的永久有效的访问连接
// @Param Id body string true "对象id"
// @Success 0     {}
// @Failure 50000 业务错误
// @Failure 50010 请求参数错误
// @router /object-auth [post]
func (c *Auth) ObjectAuth() {
	var data struct {
		Id int
	}
	ok, info := jsonio.Input(c.Ctx.Input.RequestBody, &data)
	if !ok {
		c.Data["json"] = jsonio.Fail(jsonio.ErrParamError, info, nil)
		return
	}
	err, code := object.ForeverAuth(data.Id)
	if err != nil {
		c.Data["json"] = jsonio.Fail(jsonio.ErrBusiness, err.Error(), nil)
		return
	}
	c.Data["json"] = jsonio.Success(map[string]string{
		"Code": code,
	}, "授权成功")
}
